[Data Science Tool Box] 4일차 실습
실습41: 포트정리 (lsof
)
-
lsof
프로그램 설치
apt-get install lsof
apt install lsof
-
23052 포트를 사용하는 프로그램이 있는지 파악
lsof -i :23052
결과는 아래와 같은 예시로 나옴
COMMAND PID USER FD TYPE DEVICE SIZE/OFF NODE NAME
jupyter-l 862165 root 6u IPv4 383551982 0t0 TCP *:23052 (LISTEN)
jupyter-l 862165 root 12u IPv4 383671448 0t0 TCP 8c8831330c68:23052->210.117.173.181:59663 (ESTABLISHED)
jupyter-l 862165 root 16u IPv4 383628690 0t0 TCP 8c8831330c68:23052->210.117.173.181:59664 (ESTABLISHED)
jupyter-l 862165 root 29u IPv4 383612831 0t0 TCP 8c8831330c68:23052->210.117.173.181:59720 (ESTABLISHED)
jupyter-l 862165 root 34u IPv4 383671463 0t0 TCP 8c8831330c68:23052->210.117.173.181:59667 (ESTABLISHED)
-
각자해볼것: ssh
접속시 사용하는 포트 제외하고 나머지 포트를 쓰고 있는 프로그램은 삭제
kill {PID}
위의 예시의 경우
kill 862165
-
주피터랩 평생켜놓기 + 끄기 (이거 자유자재로 할 수 있어야함)
-
PID를 조회하는 다른방법
ps aux | grep jupyter
실습42: py310, co 환경에 주피터를 설치
-
아래를 설치
(py310) conda install -c conda-forge jupyterlab
(py310) conda install -c conda-forge notebook
(co) conda install -c conda-forge jupyterlab
(co) conda install -c conda-forge notebook
-
이래야 해당환경에서 주피터를 연결할 수 있음.
실습43: py310, co 환경에 주피터랩을 각각 띄우기
-
아래를 이용
(py310) jupyter lab --port 23052
(co) jupyter lab --port 33052
터미널 여러개 쓰는게 편할걸요?
-
참고로 위의 명령은 vi jupyter_notebook_config.py
에 대한 설정이 올바르게 끝난 상태에서 가능한 명령어임.
-
이제 23052 와 33052 는 각각 다른 파이썬 커널과 연결됨. 아래를 각각 실행해보자.
import pandas as pd
= pd.DataFrame({'A':[2143,2143],'B':['-',3456]})
df map(lambda x: 0 if x == '-' else x) df.
결과가 어떠한가? 왜 이런 결과가 나왔다고 생각하는가?
실습44: quarto preview
-
블로그를 미리보면서 편집하고 싶음.
-
1개의 포트에는 (py310)에 설치된 jupyterlab
을 할당 + 1개의 포트에는 quarto preview
를 할당
quarto preview --host "0.0.0.0" --port 43052
-
개인적소감: 반응이 살짝 느려서 별로임. (좋을때: 처음에는 좋음)
실습45: quarto preview test.qmd
-
파일하나만 찍어서 preview
quarto preview day4.qmd --host "0.0.0.0" --port 43052
-
QMD파일은 RMD의 진화. (구 Rmarkdown)
- MD –> RMD, QMD
-
마크다운 문법이 가능함. (MD의 기능)
- 수식
- 목록화
-
또한 R, Python, Julia 등의 코드를 삽입하여 실행할 수 있음. (RMD, QMD의 기능??)
```{python}
import matplotlib.pyplot as plt
a = [1,2,4]
a = a+[3]
plt.plot(a)
```
-
quarto
는 .ipynb
의 렌더링과 .qmd
의 렌더링 모두 지원한다.
-
그런데 좀 이상하지 않아요??
깐적이 없는데 왜 될까? —-> .qmd파일은 txt파일이라 했지만.. {python}
하는 순간 어떤 커널에 가서 저걸 보여준다.
가상환경에 따라서 .. 실행하는 커널의 파이썬을 붙이게 되어있다.
실습46: py310.qmd / co.qmd (hw)
-
해보기1: 아래와 같이 py310.qmd
파일을 만들고 (py310)에서 preview 해보기
py310.qmd
```{python}
import pandas as pd
df = pd.DataFrame({'A':[2143,2143],'B':['-',3456]})
df.map(lambda x: 0 if x == '-' else x)
```
-
해보기2: 아래와 같이 co.qmd
파일을 만들고 (co)에서 preview 해보기
co.qmd
```{python}
import pandas as pd
df = pd.DataFrame({'A':[2143,2143],'B':['-',3456]})
df.map(lambda x: 0 if x == '-' else x)
```
실습47: R+Python 사용가능한 개발환경 만들기
-
아래를 실행
conda create -n rpy
conda activate rpy
conda install -c conda-forge r-essentials # r이랑,, 필요한거 다 깔아준담
conda install -c conda-forge plotly
conda install -c conda-forge rpy2
-
여기에서 conda install -c conda-forge r-essentials
로 인하여 R, Python, Jupyter 가 모두 최신버전으로 설치된다.
-
또한 R에는 이미 tidyverse
, IRkernel
등의 패키지가 기본으로 깔려있다.: 원래 자동으로 깔리는 건 아닌뎅 .. r-essentials가 깔아주는듯
-
R이 설치된 경로를 찾아보자.
-
수틀리면 이 R을 지우면 된다.
-
R이 설치될 수 있는 3가지 시나리오
sudo apt-get install r-base # r 공식홈페이지, 수틀리면 리눅스 포맷
(base) conda install -c conda-forge ... # 수틀리면 아나콘다 삭제해야함.
(rpy) conda install -c conda-forge ... # 수틀리면 가상환경 삭제
실습48: 포스트 업로드
-
해보기1: 적당한 ?.qmd
파일을 만들고 아래와 같은 포스트를 올려보자.
-
해보기2: 적당한 ?.ipynb
파일을 만들고 아래와 같은 포스트를 올려보자.
-
해보기3: 적당한 ?.qmd
파일을 만들고 아래와 같은 포스트를 올려보자.
실습49: 포스트 업로드 쉽게 하는 방법
-
스크립트 파일 만들어요..
upload
quarto render
git add .
git commit -m .
git push
실습50: 스크립트 파일의 위치?
-
아래파일을 어디에 두면 좋을까?
upload.sh
quarto render
git add .
git commit -m .
git push
-
저는 뭐 그냥.. 홈에두긴해요
실습51: 실행파일들의 위치
실습52: ls의 이름바꾸기 (실습추천X)
mv ls l2
- ls를 ls2로 바꿔줘! 이름 바꾸는 효과
실습53: bash
커널의 이해
-
예비학습: 파이썬 커널
-
예시1
a='askdfj;alskdjf;klajsdf'
a
$a
echo $a
-
예시2
a=('개' '고양이' '토끼')
echo $a
echo ${a}
echo ${a[0]}
echo ${a[1]}
echo ${a[@]}
-
예시3
cmd_list=(ls "ls -a")
${cmd_list}
${cmd_list[0]}
${cmd_list[1]}
-
걱정: 근데 그러면 내 리눅스에는 평생 a
, cmd_list
라는 변수가 있는거야?
—– root의 bin.. 어딘가에..
실습54: PATH
– 우분투에 저장된 영구변수
-
깨끗한 우분투에서
$PATH # 쳐보세요
-
아나콘다가 설치된 우분투에서
$PATH # 쳐보세요
실습54: 용어의 정리
-
폴더와 파일
- 폴더: 끝에
/
로 끝남. (근데 생략가능함) - 파일: 끝에
/
로 끝나지 않음.
-
개념: 모든것은 파일과 폴더의 집합이다.
-
183번 컴퓨터로 가보자.
-
우분투컴퓨터에 guebin
이라는 유저를 새롭게 추가했다 = /home/guebin/
를 만듦
-
우분투에서 깃을 설치했다 = 우분투에서 sudo apt-get install git
을 실행했다. = /usr/bin/
에 git
이라는 파일이 생겼다. = /usr/bin/git
생성
-
ls
는 우분투에 이미 내장되어있는 기능이다. = ls
는 우분투에 이미 내장되어있는 명령파일이다. = 우분투를 설치하면 /usr/bin/
에 ls
라는 파일이 이미 있다.
-
우분투에 guebin
이라는 유저를 등록했다. 이후에 guebin
이라는 유저가 아나콘다를 설치했다. = 우분투에 guebin
이라는 유저를 등록했다. 이후에 guebin
이라는 유저는 아나콘다를 이용하여 가상의 (base)환경을 만들었다. = /home/guebin/anaconda3/
폴더가 만들어졌다는 의미.
-
우분투에 guebin
이라는 (슈퍼)유저를 등록했다. 이후에 guebin
이라는 (슈퍼)유저가 루트권한을 이용하여 git
을 설치했다. = /home/guebin/
이 만들어짐 + /usr/bin/git
생성
실습55: 폴더의 레벨
-
183번 컴퓨터에는 4개의 중첩된 컴퓨터(=폴더)가 존재한다.
- root우분투
- guebin우분투
- guebin우분투-(base)
- guebin우분투-(py310)
-
186번 컴퓨터에는 3개의 중첩된 컴퓨터(=폴더)가 존재한다.
- root우분투
- root우분투-(base)
- root우분투-(py310)
-
guebin이라는 윈도우유저가 anaconda (base)를 이용하는 경우 2개의 컴퓨터가 존재한다.
- guebin윈도우
- guebin윈도우-(base)
실습56: 난 어디에서 깃을 설치했어?
-
문제1: 183번 컴퓨터에는 4개의 중첩된 컴퓨터(=폴더)가 존재한다.
- root우분투
- guebin우분투
- guebin우분투-(base)
- guebin우분투-(py310)
아래의 명령을 통하여 깃을 설치했다.
(base) sudo apt-get install git
깃은 어디에 설치되어있는가? 1번 컴퓨터(sudo햇자너 )
-
문제2: 183번 컴퓨터에는 4개의 중첩된 컴퓨터(=폴더)가 존재한다.
- root우분투
- guebin우분투
- guebin우분투-(base)
- guebin우분투-(py310)
아래와 같이 깃을 설치했다.
(py310) sudo apt-get install git
깃은 어디에 설치되어있는가? 1번!
-
문제3: 183번 컴퓨터에는 4개의 중첩된 컴퓨터(=폴더)가 존재한다.
- root우분투
- guebin우분투
- guebin우분투-(base)
- guebin우분투-(py310)
아래의 명령을 통하여 깃을 설치했다.
(py310) conda install -c conda-forge git
깃은 어디에 설치되어있는가? 4번!
-
문제4: 183번 컴퓨터에는 4개의 중첩된 컴퓨터(=폴더)가 존재한다.
- root우분투
- guebin우분투
- guebin우분투-(base)
- guebin우분투-(py310)
아래와 같이 깃을 설치했다.
(base) conda install -c conda-forge git
깃은 어디에 설치되어있는가? 3번 (이때는 base에 설치된 git이 다른환경에 영향을 주지 않음)
실습57: 난 어디에서 quarto를 설치했어?
-
문제1: 183번 컴퓨터에는 4개의 중첩된 컴퓨터(=폴더)가 존재한다.
- root우분투
- guebin우분투
- guebin우분투-(base)
- guebin우분투-(py310)
아래의 명령을 통하여 quarto를 설치했다.
(base) wget https://github.com/quarto-dev/quarto-cli/releases/download/v1.4.533/quarto-1.4.533-linux-amd64.deb
(base) sudo dpkg -i quarto-1.4.533-linux-amd64.deb
quarto는 어디에 설치되어있는가? 1번
-
문제2: 183번 컴퓨터에는 4개의 중첩된 컴퓨터(=폴더)가 존재한다.
- root우분투
- guebin우분투
- guebin우분투-(base)
- guebin우분투-(py310)
아래의 명령을 통하여 quarto를 설치했다.
(base) wget https://github.com/quarto-dev/quarto-cli/releases/download/v1.4.533/quarto-1.4.533-linux-amd64.deb
(base) conda activate py310
(py310) sudo dpkg -i quarto-1.4.533-linux-amd64.deb
quarto는 어디에 설치되어있는가? 1번
-
문제3: 183번 컴퓨터에는 4개의 중첩된 컴퓨터(=폴더)가 존재한다.
- root우분투
- guebin우분투
- guebin우분투-(base)
- guebin우분투-(py310)
아래의 명령을 통하여 quarto를 설치했다.
(py310) wget https://github.com/quarto-dev/quarto-cli/releases/download/v1.4.533/quarto-1.4.533-linux-amd64.deb
(py310) sudo dpkg -i quarto-1.4.533-linux-amd64.deb
quarto는 어디에 설치되어있는가? 1번.. sudo!!!
-
문제4: 183번 컴퓨터에는 4개의 중첩된 컴퓨터(=폴더)가 존재한다.
- root우분투
- guebin우분투
- guebin우분투-(base)
- guebin우분투-(py310)
아래의 명령을 통하여 quarto를 설치했다.
(py310) wget https://github.com/quarto-dev/quarto-cli/releases/download/v1.4.533/quarto-1.4.533-linux-amd64.deb
(py310) conda activate base
(base) sudo dpkg -i quarto-1.4.533-linux-amd64.deb
quarto는 어디에 설치되어있는가? 1번
실습58: 난 어디에서 upload.sh를 설치했어?
실습59: 여러가지 프로그램, 여러가지 설치방법
-
우분투자체의 프로그램
- 우분투 자체의 프로그램 예시: git, quarto, python, R, anaconda, vi, ssh, wget, vscode
- 우분투 자체의 프로그램은 다시 모든 유저가 영향을 받는 프로그램과 그렇지 않은 프로그램이 있음 : sudo(root권한)으로 까느냐 그냥 까느냐
- 우분투 자체의 프로그램을 설치하는 방법들
sudo apt install git
sudo apt-get install git
sudo dpkg -i quarto-1.4.533-linux-amd64.deb
bash Anaconda3-2019.03-Linux-x86_64.sh
sudo gdebi rstudio-server-1.2.5033-amd64.deb
# 기타 파일을 넣을 수 있는 모든 방법 (예를들면 압축파일 다운로드후 풀기)
-
아나콘다(=base)에 종속된 프로그램
- 아나콘다내에 종속된 프로그램의 예시: conda, python, R, jupyter
- 아나콘다에 종속된 프로그램은
anaconda3
폴더안에 있음.
-
아나콘다환경(=py310)에 종속시킬 수 “있는” 프로그램
- 아나콘다내에 종속된 프로그램의 예시: python, R, jupyter
- 아나콘다환경에 종속된 프로그램은
anaconda3/envs/py310
와 같은 형식의 폴더안에 있음.
-
파이썬에 종속된 프로그램 (=파이썬패키지=파이썬라이브러리=파이썬모듈)
- 파이썬에 종속된 프로그램 예시: numpy, pandas
- 얘네들이 어디에 깔리는지는 그때그때 다름
- 지우는 방법도 그때그때 다르겠지? (젤 편하고 깔끔하게 지우려면?)
-
R에 종속된 프로그램 (=R패키지=R라이브러리)
- R에 종속된 프로그램의 예시: tidyverse
- 얘들이 어디 깔리는지도 그때그때 다름
- 지우는 방법도 그때그때 다르겠지? (젤 편하고 깔끔하게 지우려면?)
-
질문1: pip install
vs conda install
- 설치되는 레벨의 차이
- 설치에서 느껴지는 편안함의 차이
- 삭제할때 느껴지는 불편함의 차이
pip install pandas
는 사실install.packages("tidyverse")
에 대응되는 것임
pip install이 더 작은 느낌.. R이나 Python에서 사용하는 패키지들을 설치하는 작은 느낌이고.. conda는 R이나 Python등을 설치 할 수 있엉
-
질문2: 언제 pip install
을 쓰고 언제 conda install
을 써야할까? 답은없어요. 저는 대충 아래와 같이 합니다. (해보고 수틀리면 그냥 환경날리세여)
- 만만한 패키지는 pip install 로 설치: numpy, pandas
- 까다로운 패키지는 conda install 로 설치: torch, autogluon
실습60: (base)에서 (rpy)에 있는 R 실행
-
원래는 불가능한 일이겠죠?
-
억지로 가능하게 하려면?
실습61: (rpy)에서 EPT라는 R패키지 설치하고 위치파악하기
-
R을 실행
conda activate rpy
R
-
또다른 터미널을 열고 아래의 폴더로 이동 + 패키지확인
~/anaconda3/envs/rpy/lib/R/library
cd ls
-
EPT패키지 설치
install.packages("EPT")
-
~/anaconda3/envs/rpy/lib/R/library
에서 확인
실습62: (rpy)에 설치된 R과 주피터 연결하기
-
R을 실행
::installspec() IRkernel
-
주피터 실행
- 주피터랩에 R이 실행된다!
실습63: 대시보드, 프리젠테이션 베끼기
-
ref: https://guebin.github.io/DV2023/posts/14wk-1.html
-
대시보드
-
프리젠테이션